#pragma once

/*	Currently the Camera is tied to the player as the only camera in game.
 *	As such, the camera has player specific functionality like mouse
 *	rotations.
 */

#include "precompiled.h"
#include "Common.h"

class Camera
{
public:
	Camera(void);
	~Camera(void);

	// Get a reference to the camera matrix.
	glm::mat4* getCameraMatrix( );

	void AddTranslation( glm::vec3 translation );
	void AddRotation( glm::vec3 rotation );

	void setPosition( glm::vec4 pos );
	void getPosition( glm::vec4 &pos );

	void ComputeMatrix();

	// Find our mouse look to.
	void Find_look_forward();

	// Use the look forward to rotate the ground forward.
	void Find_ground_forward();

	void Update( GLdouble time );

private:

	void move_1( );

	glm::vec4 position;
	TransformationCore _transform;
	glm::vec3	ground_forward, 
				look_forward,
				mRight;

	glm::mat4 projection, view, final;
	GLfloat fov, znear, zfar, aspect;
};

